package com.wicket.okrframework.integration.dto;

import com.wicket.okrframework.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
import lombok.Data;

@Data
public class UserInfoDto extends BaseDto implements Serializable {

  /**
   * 就职记录ID:
   */
  @ApiModelProperty("就职记录ID")
  private String inductionRecordId;

  /**
   * 账号:
   */
  @ApiModelProperty("账号")
  private String userId;

  /**
   * 个人资料记录ID:
   */
  @ApiModelProperty("个人资料记录ID")
  private String personalDataId;

  /**
   * 真实姓名:
   */
  @ApiModelProperty("真实姓名")
  private String idCardName;

  /**
   * 用户昵称:
   */
  @ApiModelProperty("用户昵称")
  private String nickName;

  /**
   * 真实头像:
   */
  @ApiModelProperty("真实头像")
  private String userFace;

  /**
   * 个人简介
   */
  @ApiModelProperty("个人简介")
  private String userIntro;

  /**
   * 用户性别 MALE:男 FEMALE:女
   */
  @ApiModelProperty("用户性别")
  private String sex;

  /**
   * 出生日期
   */
  @ApiModelProperty("出生日期")
  private Date birthday;

  /**
   * 用户城市
   */
  @ApiModelProperty("用户城市")
  private String city;

  /**
   * 备注首位字母
   */
  @ApiModelProperty("备注首位字母")
  private String firstLetter;

  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    if (!super.equals(o)) return false;
    UserInfoDto that = (UserInfoDto) o;
    return (
      inductionRecordId == that.inductionRecordId &&
      userId == that.userId &&
      personalDataId == that.personalDataId &&
      idCardName == that.idCardName &&
      nickName == that.nickName &&
      userFace == that.userFace &&
      userIntro == that.userIntro &&
      sex == that.sex &&
      birthday == that.birthday &&
      city == that.city &&
      firstLetter == that.firstLetter
    );
  }

  @Override
  public int hashCode() {
    return Objects.hash(
      super.hashCode(),
      inductionRecordId,
      userId,
      personalDataId,
      idCardName,
      nickName,
      userFace,
      userIntro,
      sex,
      birthday,
      city,
      firstLetter
    );
  }
}
